#ifndef FSM_APP_H_
#define FSM_APP_H_

typedef struct _data{
    int cnt;
}SM_DATA;


/* ------------------- Functions -----------------------------*/
/* 状态机 函数指针 区域 */
State step_init(void * arg);
State step_count(void * arg);//计数
State step_done(void * arg);//计数完成
State step_default(void * arg);//错误过程

/* ------------------- Config -----------------------------*/
/* 状态定义(这里的顺序要求与 Steps[] 一致) */
enum states{ s_init, s_count, s_done, s_default};
/* 函数指针 （相当于函数入口） */
static Procedure steps_list[] = { step_init, step_count, step_done, step_default };

static inline void init_state_machine(void *arg)
{
    set_state(arg, s_init);
}

static inline void reset_state_machine(void *arg)
{
    set_state(arg, s_init);
}

static inline int is_sm_done(void*arg)
{
    return ((SM_ARG * )arg)->st.cs == s_done;
}
#endif /* ifndef FSM_APP_H */
